import { defineStore } from 'pinia'
import { ref } from 'vue'
import { postUserLogin } from '@/api/user'

//useUserStore=>use+仓库名+Store
// 用户模块	token setToken removeToken 登录、退出、自身字段
export const useUserStore = defineStore(
    //'big-user'防止重名而加的前缀
    'big-user',
    () => { 
        const localStorageTokenValue = sessionStorage.getItem('token') || null;
        const localStorageToken = ref(localStorageTokenValue); // 这个ref现在包含了从localStorage获取的值（如果有的话）
         
        // 初始化token，使用从localStorage获取的值（如果localStorage中有的话）
        const token = ref(localStorageToken.value);
         
        // 设置token的函数
        const setToken = (newToken) => {
            token.value = newToken; // 更新响应式引用
            sessionStorage.setItem('token', newToken); // 将新token存储到localStorage
            console.log(token,"token");
        };
        const removeToken = () => {
            token.value = ''
        }

        //默认为对象
        const user = ref({})
        //请求获取信息这边设置个回调函数 一调用这方法就发请求或者获取数据
        const getUser = async (data) => {
            const res = await postUserLogin(data) // 请求获取数据
            //请求得到的数据保存到user中
            user.value = res.data.data
        }
        // 设置用户信息
        const setUser = (obj) => (user.value = obj)

        //暴露出去
        return { token, setToken, removeToken, user, getUser, setUser }
    },
    {
        persist: true // 持久化
    }
)


